home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1993 April: Penguin on DISC / ADC Developer CD (1993-04) (''Penguin On DISC'')_iso / Dev.CD Apr 93.iso / Utilities / MPW Interfaces 7.1 Beta / CIncludes / PPCToolBox.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-08-28  |  12.3 KB  |  376 lines  |  [TEXT/MPS ]

  1.  
  2. /************************************************************
  3.  
  4. Created: Thursday, September 5, 1991 at 5:45 PM
  5.  PPCToolBox.h
  6.  C Interface to the Macintosh Libraries
  7.  
  8.  
  9.   Copyright Apple Computer, Inc. 1989-1991
  10.   All rights reserved
  11.  
  12. ************************************************************/
  13.  
  14.  
  15. #ifndef __PPCTOOLBOX__
  16. #define __PPCTOOLBOX__
  17.  
  18. #ifndef __APPLETALK__
  19. #include <AppleTalk.h>
  20. #endif
  21.  
  22. #ifndef __MEMORY__
  23. #include <Memory.h>
  24. #endif
  25.  
  26. #ifndef __TYPES__
  27. #include <Types.h>
  28. #endif
  29.  
  30.  
  31.  
  32. #define gestaltPPCVersionAttr 'ppcv'
  33.  
  34. typedef unsigned char PPCServiceType;
  35.  
  36. enum {
  37.  
  38.  ppcServiceRealTime = 1,
  39. };
  40.  
  41. typedef short PPCLocationKind;
  42.  
  43. enum {
  44.  
  45.  ppcNoLocation = 0,                            /* There is no PPCLocName */
  46.  ppcNBPLocation = 1,                        /* Use AppleTalk NBP      */
  47.  ppcNBPTypeLocation = 2                        /* Used for specifying a location name type during PPCOpen only */
  48. };
  49.  
  50. typedef short PPCPortKinds;
  51.  
  52. enum {
  53.  
  54.  ppcByCreatorAndType = 1,                    /* Port type is specified as colloquial Mac creator and type */
  55.  ppcByString = 2                            /* Port type is in pascal string format */
  56. };
  57.  
  58. typedef unsigned char PPCSessionOrigin;        /* Values returned for request field in PPCInform call */
  59.  
  60. enum {
  61.  
  62.  
  63. /* Values returned for requestType field in PPCInform call */
  64.  ppcLocalOrigin = 1,                        /* session originated from this machine */
  65.  ppcRemoteOrigin = 2                        /* session originated from remote machine */
  66. };
  67.  
  68. typedef short PPCPortRefNum;
  69. typedef long PPCSessRefNum;
  70.  
  71. struct PPCPortRec {
  72.  ScriptCode nameScript;                        /* script of name */
  73.  Str32 name;                                /* name of port as seen in browser */
  74.  PPCPortKinds portKindSelector;                /* which variant */
  75.  union {
  76.   Str32 portTypeStr;                        /* pascal type string */
  77.   struct {
  78.    OSType creator;
  79.    OSType type;
  80.    } port;
  81.   } u;
  82. };
  83.  
  84. typedef struct PPCPortRec PPCPortRec;
  85. typedef PPCPortRec *PPCPortPtr;
  86.  
  87. struct LocationNameRec {
  88.  PPCLocationKind locationKindSelector;        /* which variant */
  89.  union {
  90.   EntityName nbpEntity;                        /* NBP name entity */
  91.   Str32 nbpType;                            /* just the NBP type string, for PPCOpen */
  92.   } u;
  93. };
  94.  
  95. typedef struct LocationNameRec LocationNameRec;
  96. typedef LocationNameRec *LocationNamePtr;
  97.  
  98. struct PortInfoRec {
  99.  unsigned char filler1;
  100.  Boolean authRequired;
  101.  PPCPortRec name;
  102. };
  103.  
  104. typedef struct PortInfoRec PortInfoRec;
  105. typedef PortInfoRec *PortInfoPtr;
  106.  
  107.  
  108. typedef PortInfoRec *PortInfoArrayPtr;
  109. typedef pascal Boolean (*PPCFilterProcPtr)(LocationNamePtr, PortInfoPtr);
  110. /* Procedures you will need to write */
  111. /* ex:  void    MyCompletionRoutine(PPCParamBlkPtr pb) */
  112. /* ex:  pascal Boolean MyPortFilter(LocationNamePtr, PortInfoPtr) */
  113. typedef ProcPtr PPCCompProcPtr;
  114.  
  115.  
  116. #define PPCHeader \
  117.      Ptr    qLink;                           /* PPC's Internal Use */\
  118.      unsigned short csCode;                   /* Requested PPC command */\
  119.      unsigned short intUse;                   /* Internal Use */\
  120.      Ptr    intUsePtr;                      /* Internal Use */\
  121.                                             /* 12 --> */ PPCCompProcPtr ioCompletion;  /* Completion Routine */\
  122.                                             /* 16 <-- */ OSErr   ioResult;   /* Command Result Code */\
  123.      unsigned long Reserved[5];             /* Reserved for PPC, Don'tuse */
  124.  
  125. struct PPCOpenPBRec {
  126.  PPCHeader 
  127.  PPCPortRefNum portRefNum;                    /* 38 <--   Port Reference */
  128.  long filler1;
  129.  PPCServiceType serviceType;                /* 44 -->    Bit field describing the requested port service */
  130.  unsigned char resFlag;                        /* 45 -->   Must be set to 0 */
  131.  PPCPortPtr portName;                        /* 46 -->   PortName for PPC */
  132.  LocationNamePtr locationName;                /* 50 -->   If NBP Registration is required */
  133.  Boolean networkVisible;                    /* 54 -->   make this network visible on network */
  134.  Boolean nbpRegistered;                        /* 55 <--   The given location name was registered on the network */
  135. };
  136.  
  137. typedef struct PPCOpenPBRec PPCOpenPBRec;
  138. typedef PPCOpenPBRec *PPCOpenPBPtr;
  139.  
  140. struct PPCInformPBRec {
  141.  PPCHeader
  142.  PPCPortRefNum portRefNum;                    /* 38 -->   Port Identifier */
  143.  PPCSessRefNum sessRefNum;                    /* 40 <--   Session Reference */
  144.  PPCServiceType serviceType;                /* 44 <--   Status Flags for type of session, local, remote */
  145.  Boolean autoAccept;                        /* 45 -->   if true session will be accepted automatically */
  146.  PPCPortPtr portName;                        /* 46 -->   Buffer for Source PPCPortRec */
  147.  LocationNamePtr locationName;                /* 50 -->   Buffer for Source LocationNameRec */
  148.  StringPtr userName;                        /* 54 -->   Buffer for Soure user's name trying to link. */
  149.  unsigned long userData;                    /* 58 <--   value included in PPCStart's userData */
  150.  PPCSessionOrigin requestType;                /* 62 <--   Local or Network */
  151. };
  152.  
  153. typedef struct PPCInformPBRec PPCInformPBRec;
  154. typedef PPCInformPBRec *PPCInformPBPtr;
  155.  
  156. struct PPCStartPBRec {
  157.  PPCHeader
  158.  PPCPortRefNum portRefNum;                    /* 38 -->   Port Identifier */
  159.  PPCSessRefNum sessRefNum;                    /* 40 <--   Session Reference */
  160.  PPCServiceType serviceType;                /* 44 <--   Actual service method (realTime) */
  161.  unsigned char resFlag;                        /* 45 -->   Must be set to 0  */
  162.  PPCPortPtr portName;                        /* 46 -->   Destination portName */
  163.  LocationNamePtr locationName;                /* 50 -->   NBP or NAS style service location name */
  164.  unsigned long rejectInfo;                    /* 54 <--   reason for rejecting the session request */
  165.  unsigned long userData;                    /* 58 -->   Copied to destination PPCInform parameter block */
  166.  unsigned long userRefNum;                    /* 62 -->   userRefNum (obtained during login process)  */
  167. };
  168.  
  169. typedef struct PPCStartPBRec PPCStartPBRec;
  170. typedef PPCStartPBRec *PPCStartPBPtr;
  171.  
  172. struct PPCAcceptPBRec {
  173.  PPCHeader
  174.  short filler1;
  175.  PPCSessRefNum sessRefNum;                    /* 40 -->   Session Reference */
  176. };
  177.  
  178. typedef struct PPCAcceptPBRec PPCAcceptPBRec;
  179. typedef PPCAcceptPBRec *PPCAcceptPBPtr;
  180.  
  181. struct PPCRejectPBRec {
  182.  PPCHeader
  183.  short filler1;
  184.  PPCSessRefNum sessRefNum;                    /* 40 -->   Session Reference */
  185.  short filler2;
  186.  long filler3;
  187.  long filler4;
  188.  unsigned long rejectInfo;                    /* 54 -->   reason for rejecting the session request  */
  189. };
  190.  
  191. typedef struct PPCRejectPBRec PPCRejectPBRec;
  192. typedef PPCRejectPBRec *PPCRejectPBPtr;
  193.  
  194. struct PPCWritePBRec {
  195.  PPCHeader
  196.  short filler1;
  197.  PPCSessRefNum sessRefNum;                    /* 40 -->   Session Reference */
  198.  Size bufferLength;                            /* 44 -->   Length of the message buffer */
  199.  Size actualLength;                            /* 48 <--   Actual Length Written */
  200.  Ptr bufferPtr;                                /* 52 -->   Pointer to message buffer */
  201.  Boolean more;                                /* 56 -->   if more data in this block will be written */
  202.  unsigned char filler2;
  203.  unsigned long userData;                    /* 58 -->   Message block userData Uninterpreted by PPC */
  204.  OSType blockCreator;                        /* 62 -->   Message block creator Uninterpreted by PPC */
  205.  OSType blockType;                            /* 66 -->   Message block type Uninterpreted by PPC */
  206. };
  207.  
  208. typedef struct PPCWritePBRec PPCWritePBRec;
  209. typedef PPCWritePBRec *PPCWritePBPtr;
  210.  
  211. struct PPCReadPBRec {
  212.  PPCHeader
  213.  short filler1;
  214.  PPCSessRefNum sessRefNum;                    /* 40 -->   Session Reference */
  215.  Size bufferLength;                            /* 44 -->   Length of the message buffer */
  216.  Size actualLength;                            /* 48 <--   Actual length read */
  217.  Ptr bufferPtr;                                /* 52 -->   Pointer to message buffer */
  218.  Boolean more;                                /* 56 <--   if true more data in this block to be read */
  219.  unsigned char filler2;
  220.  unsigned long userData;                    /* 58 <--   Message block userData Uninterpreted by PPC */
  221.  OSType blockCreator;                        /* 62 <--   Message block creator Uninterpreted by PPC */
  222.  OSType blockType;                            /* 66 <--   Message block type Uninterpreted by PPC */
  223. };
  224.  
  225. typedef struct PPCReadPBRec PPCReadPBRec;
  226. typedef PPCReadPBRec *PPCReadPBPtr;
  227.  
  228. struct PPCEndPBRec {
  229.  PPCHeader
  230.  short filler1;
  231.  PPCSessRefNum sessRefNum;                    /* 40 -->   Session Reference */
  232. };
  233.  
  234. typedef struct PPCEndPBRec PPCEndPBRec;
  235. typedef PPCEndPBRec *PPCEndPBPtr;
  236.  
  237. struct PPCClosePBRec {
  238.  PPCHeader
  239.  PPCPortRefNum portRefNum;                    /* 38 -->   Port Identifier */
  240. };
  241.  
  242. typedef struct PPCClosePBRec PPCClosePBRec;
  243. typedef PPCClosePBRec *PPCClosePBPtr;
  244.  
  245. struct IPCListPortsPBRec {
  246.  PPCHeader
  247.  short filler1;
  248.  unsigned short startIndex;                    /* 40 -->   Start Index */
  249.  unsigned short requestCount;                /* 42 -->   Number of entries to be returned */
  250.  unsigned short actualCount;                /* 44 <--   Actual Number of entries to be returned */
  251.  PPCPortPtr portName;                        /* 46 -->   PortName Match */
  252.  LocationNamePtr locationName;                /* 50 -->   NBP or NAS type name to locate the Port Location */
  253.  PortInfoArrayPtr bufferPtr;                /* 54 -->   Pointer to a buffer requestCount*sizeof(PortInfo) bytes big */
  254. };
  255.  
  256. typedef struct IPCListPortsPBRec IPCListPortsPBRec;
  257. typedef IPCListPortsPBRec *IPCListPortsPBPtr;
  258.  
  259. union PPCParamBlockRec {
  260.  PPCOpenPBRec openParam;
  261.  PPCInformPBRec informParam;
  262.  PPCStartPBRec startParam;
  263.  PPCAcceptPBRec acceptParam;
  264.  PPCRejectPBRec rejectParam;
  265.  PPCWritePBRec writeParam;
  266.  PPCReadPBRec readParam;
  267.  PPCEndPBRec endParam;
  268.  PPCClosePBRec closeParam;
  269.  IPCListPortsPBRec listPortsParam;
  270. };
  271.  
  272. typedef union PPCParamBlockRec PPCParamBlockRec;
  273. typedef PPCParamBlockRec *PPCParamBlockPtr;
  274.  
  275.  
  276. #ifdef __cplusplus
  277. extern "C" {
  278. #endif
  279. /*  PPC Calling Conventions  */
  280. #pragma parameter __D0 PPCInit
  281. pascal OSErr PPCInit(void)
  282.  = {0x7000,0xA0DD}; 
  283. pascal OSErr PPCOpen(PPCOpenPBPtr pb,Boolean async); 
  284. #pragma parameter __D0 PPCOpenSync(__A0)
  285. pascal OSErr PPCOpenSync(PPCOpenPBPtr pb)
  286.  = {0x7001,0xA0DD}; 
  287. #pragma parameter __D0 PPCOpenAsync(__A0)
  288. pascal OSErr PPCOpenAsync(PPCOpenPBPtr pb)
  289.  = {0x7001,0xA4DD}; 
  290. pascal OSErr PPCInform(PPCInformPBPtr pb,Boolean async); 
  291. #pragma parameter __D0 PPCInformSync(__A0)
  292. pascal OSErr PPCInformSync(PPCInformPBPtr pb)
  293.  = {0x7003,0xA0DD}; 
  294. #pragma parameter __D0 PPCInformAsync(__A0)
  295. pascal OSErr PPCInformAsync(PPCInformPBPtr pb)
  296.  = {0x7003,0xA4DD}; 
  297. pascal OSErr PPCStart(PPCStartPBPtr pb,Boolean async); 
  298. #pragma parameter __D0 PPCStartSync(__A0)
  299. pascal OSErr PPCStartSync(PPCStartPBPtr pb)
  300.  = {0x7002,0xA0DD}; 
  301. #pragma parameter __D0 PPCStartAsync(__A0)
  302. pascal OSErr PPCStartAsync(PPCStartPBPtr pb)
  303.  = {0x7002,0xA4DD}; 
  304. pascal OSErr PPCAccept(PPCAcceptPBPtr pb,Boolean async); 
  305. #pragma parameter __D0 PPCAcceptSync(__A0)
  306. pascal OSErr PPCAcceptSync(PPCAcceptPBPtr pb)
  307.  = {0x7004,0xA0DD}; 
  308. #pragma parameter __D0 PPCAcceptAsync(__A0)
  309. pascal OSErr PPCAcceptAsync(PPCAcceptPBPtr pb)
  310.  = {0x7004,0xA4DD}; 
  311. pascal OSErr PPCReject(PPCRejectPBPtr pb,Boolean async); 
  312. #pragma parameter __D0 PPCRejectSync(__A0)
  313. pascal OSErr PPCRejectSync(PPCRejectPBPtr pb)
  314.  = {0x7005,0xA0DD}; 
  315. #pragma parameter __D0 PPCRejectAsync(__A0)
  316. pascal OSErr PPCRejectAsync(PPCRejectPBPtr pb)
  317.  = {0x7005,0xA4DD}; 
  318. pascal OSErr PPCWrite(PPCWritePBPtr pb,Boolean async); 
  319. #pragma parameter __D0 PPCWriteSync(__A0)
  320. pascal OSErr PPCWriteSync(PPCWritePBPtr pb)
  321.  = {0x7006,0xA0DD}; 
  322. #pragma parameter __D0 PPCWriteAsync(__A0)
  323. pascal OSErr PPCWriteAsync(PPCWritePBPtr pb)
  324.  = {0x7006,0xA4DD}; 
  325. pascal OSErr PPCRead(PPCReadPBPtr pb,Boolean async); 
  326. #pragma parameter __D0 PPCReadSync(__A0)
  327. pascal OSErr PPCReadSync(PPCReadPBPtr pb)
  328.  = {0x7007,0xA0DD}; 
  329. #pragma parameter __D0 PPCReadAsync(__A0)
  330. pascal OSErr PPCReadAsync(PPCReadPBPtr pb)
  331.  = {0x7007,0xA4DD}; 
  332. pascal OSErr PPCEnd(PPCEndPBPtr pb,Boolean async); 
  333. #pragma parameter __D0 PPCEndSync(__A0)
  334. pascal OSErr PPCEndSync(PPCEndPBPtr pb)
  335.  = {0x7008,0xA0DD}; 
  336. #pragma parameter __D0 PPCEndAsync(__A0)
  337. pascal OSErr PPCEndAsync(PPCEndPBPtr pb)
  338.  = {0x7008,0xA4DD}; 
  339. pascal OSErr PPCClose(PPCClosePBPtr pb,Boolean async); 
  340. #pragma parameter __D0 PPCCloseSync(__A0)
  341. pascal OSErr PPCCloseSync(PPCClosePBPtr pb)
  342.  = {0x7009,0xA0DD}; 
  343. #pragma parameter __D0 PPCCloseAsync(__A0)
  344. pascal OSErr PPCCloseAsync(PPCClosePBPtr pb)
  345.  = {0x7009,0xA4DD}; 
  346. pascal OSErr IPCListPorts(IPCListPortsPBPtr pb,Boolean async); 
  347. #pragma parameter __D0 IPCListPortsSync(__A0)
  348. pascal OSErr IPCListPortsSync(IPCListPortsPBPtr pb)
  349.  = {0x700A,0xA0DD}; 
  350. #pragma parameter __D0 IPCListPortsAsync(__A0)
  351. pascal OSErr IPCListPortsAsync(IPCListPortsPBPtr pb)
  352.  = {0x700A,0xA4DD}; 
  353.  
  354. pascal OSErr DeleteUserIdentity(unsigned long userRef); 
  355. pascal OSErr GetDefaultUser(unsigned long *userRef,
  356.                             Str32 userName); 
  357. pascal OSErr StartSecureSession(PPCStartPBPtr pb,
  358.                                 Str32 userName,
  359.                                 Boolean useDefault,
  360.                                 Boolean allowGuest,
  361.                                 Boolean *guestSelected,
  362.                                 ConstStr255Param prompt); 
  363. pascal OSErr PPCBrowser(ConstStr255Param prompt,
  364.                         ConstStr255Param applListLabel,
  365.                         Boolean defaultSpecified,
  366.                         LocationNameRec *theLocation,
  367.                         PortInfoRec *thePortInfo,
  368.                         PPCFilterProcPtr portFilter,
  369.                         ConstStr32Param theLocNBPType)
  370.  = {0x303C,0x0D00,0xA82B}; 
  371. #ifdef __cplusplus
  372. }
  373. #endif
  374.  
  375. #endif
  376.